package com.hsgene.gateway.support;

import com.hsgene.common.ClientType;
import com.hsgene.common.util.result.ApiResult;

import javax.servlet.http.HttpServletRequest;

/**
 * 客户端请求过滤器
 *
 * @author wangbing
 * @version 1.0, 2018/11/9
 */
public interface ClientRequestFilter {

    /**
     * 端别过滤器标识
     *
     * @return 端别
     */
    ClientType filterType();

    /**
     * 过滤器执行顺序，数字越小越先执行
     *
     * @return 执行顺序
     */
    int filterOrder();

    /**
     * 判断是否需要执行过滤操作
     *
     * @param request 客户端请求
     * @return true：需要执行；false：不需要执行
     */
    boolean shouldFilter(HttpServletRequest request);

    /**
     * 过滤逻辑
     *
     * @param request 客户端请求
     * @return 过滤结果
     */
    ApiResult run(HttpServletRequest request);
}
